package Map_Study.TreeMap_01;

import java.util.TreeMap;

public class TreeMapDemo2 {
    /*
        需求2：
            键：学生对象
            值：籍贯
            要求：按照学生年龄的升序排列
                 年龄一样按照姓名字母进行排序
                 如果同姓名同年龄认为是同一个人
     */
    public static void main(String[] args) {
        PrimaryStudent ps1 = new PrimaryStudent("yoshino", 12);
        PrimaryStudent ps2 = new PrimaryStudent("nanako", 11);
        PrimaryStudent ps3 = new PrimaryStudent("kemomimi", 11);
        PrimaryStudent ps4 = new PrimaryStudent("mana", 13);

        //o1表示当前要添加的元素
        //o2表示当前红黑树已经存在的元素
        //返回值
        //负数：表示当前要添加的元素是小的，存左边
        //正数：表示当前要添加的元素是大的，存右边
        //0：表示当前要添加的元素已存在，舍弃
        TreeMap<PrimaryStudent, String> tm = new TreeMap<>((o1, o2) -> {
            int i = o1.getAge() - o2.getAge();
            i = i == 0 ? o1.getName().compareTo(o2.getName()) : i;
            return i;
        });

        tm.put(ps1,"Tokyo");
        tm.put(ps2,"Osaka");
        tm.put(ps3,"Nagoya");
        tm.put(ps4,"Kobe");

        System.out.println(tm);
    }
}
class PrimaryStudent{
    private String name;
    private int age;

    public PrimaryStudent() {
    }

    public PrimaryStudent(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return name + ", " + age;
    }
}
